﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using BO = Viewer.BusinessObject.BusinessEntities;
using System.Collections.Generic;
using Ext.Net;
using Viewer.BusinessObject.BusinessEntities;
using Viewer.ToChuc;
using Viewer.ChucNang;
namespace Viewer.UserControls
{
    public partial class UCChangeToChuc : System.Web.UI.UserControl
    {
        BO.NSToChuc ToChuc = new Viewer.BusinessObject.BusinessEntities.NSToChuc();
        BO.ChucNang ChucNang = new Viewer.BusinessObject.BusinessEntities.ChucNang();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {             
                Ext.Net.TreeNode root = new Ext.Net.TreeNode("Tổ Chức Hành Chính");
                root.Expandable = ThreeStateBool.True;
                root.SingleClickExpand = false;
                trPanel.Root.Add(root);
            }
        }
        /// <summary>
        /// Shows the dialog change.
        /// </summary>
        /// <param name="id">The id.</param>
        /// <author>baodt</author>
        /// <datetime>7/5/2011-9:05 AM</datetime>
        public void ShowDialogChange(int id,string type,string toChucTrucThuocHienTai)
        {
            lblMoi.Text = string.Empty;
            hdTochucIdChaMoi.Value = string.Empty;
            lblCu.Text = toChucTrucThuocHienTai;
            hdStatus.Text = type;
            hdTochucId.Text = id.ToString();
            if (type.Equals("Tochuc"))
            {
                NSToChuc item = ToChuc.GetByID(id);
                hdTochucIdChaCu.Value = item.ToChucIDCha.ToString();
                wdChangTochuc.Title = "Thay đổi tổ chức trực thuộc";
                Label2.Text = "Tổ chức trực thuộc hiện tại :";
                Label1.Text = "Tổ chức trực thuộc muốn thay đổi :";
            }
            else
            {
                QUModule item = ChucNang.GetChucNangById(id);
                hdTochucIdChaCu.Value = item.ModuleIDCha.ToString();             
                wdChangTochuc.Title = "Thay đổi chức năng trực thuộc";
                Label2.Text = "Chức năng trực thuộc hiện tại :";
                Label1.Text = "Chức năng trực thuộc  muốn thay đổi :";
            }
            LoadDataForTreeUc();
            wdChangTochuc.Show();
        }
        /// <summary>
        /// Loads the data for tree.
        /// </summary>
        /// <author>baodt</author>
        /// <datetime>7/5/2011-9:05 AM</datetime>
        public void LoadDataForTreeUc()
        {

            if (hdStatus.Text.ToString().Equals("Tochuc"))
            {
                Ext.Net.TreeNode root = new Ext.Net.TreeNode("Tổ Chức Hành Chính");
                root.Expandable = ThreeStateBool.True;
                root.Expanded = true;
                root.SingleClickExpand = false;
                trPanel.Root.Add(root);

                foreach (BO.NSToChuc tochuc in ToChuc.LoadDataRootTree())
                {
                    Ext.Net.TreeNode cap1 = new Ext.Net.TreeNode(tochuc.ToChucID.ToString(), tochuc.TenToChucFull, Icon.Group);
                    cap1.Expanded = true;
                    cap1.Expandable = ThreeStateBool.True;
                    cap1.SingleClickExpand = true;
                    root.Nodes.Add(cap1);
                    foreach (BO.NSToChuc tochucCon in ToChuc.LoadDataNode(tochuc.ToChucID))
                    {
                        Ext.Net.TreeNode cap2 = new Ext.Net.TreeNode(tochucCon.ToChucID.ToString(), tochucCon.TenToChucFull, Icon.Group);
                        cap1.Nodes.Add(cap2);
                        cap2.Expanded = true;
                        cap2.Expandable = ThreeStateBool.True;
                    }
                }
            }
            else
            {
                Ext.Net.TreeNode root = new Ext.Net.TreeNode("Chức năng");
                root.Expandable = ThreeStateBool.True;
                root.Expanded = true;
                root.SingleClickExpand = false;
                trPanel.Root.Add(root);
                foreach (BO.QUModule chucnang in ChucNang.LoadDataRootTree())
                {
                    Ext.Net.TreeNode cap1 = new Ext.Net.TreeNode(chucnang.ModuleID.ToString(), chucnang.TenModuleFull, Icon.Group);
                    cap1.Expandable = ThreeStateBool.True;
                    cap1.Expanded = true;
                    root.Nodes.Add(cap1);
                    foreach (BO.QUModule chucnangCon in ChucNang.LoadDataNode(chucnang.ModuleID))
                    {
                        Ext.Net.TreeNode cap2 = new Ext.Net.TreeNode(chucnangCon.ModuleID.ToString(), chucnangCon.TenModuleFull, Icon.Group);
                        cap1.Nodes.Add(cap2);
                        cap2.Expanded = true;
                        cap2.Expandable = ThreeStateBool.True;
                    }
                }
            }
            if (X.IsAjaxRequest)
            {
                Ext.Net.X.AddScript("refreshTree({0},{1});", trPanel.ClientID, trPanel.Root.ToJson());
            }

        }

        /// <summary>
        /// Handles the Click event of the btnChon control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="Ext.Net.DirectEventArgs"/> instance containing the event data.</param>
        /// <author>baodt</author>
        /// <datetime>7/5/2011-9:05 AM</datetime>
        protected void btnChon_Click(object sender, DirectEventArgs e)
        {
            int idChaMoi = hdTochucIdChaMoi.Text.ToString() != string.Empty ? Convert.ToInt16(hdTochucIdChaMoi.Text) : 0;
            if (hdStatus.Value.ToString().Equals("Tochuc"))            {
                
                using (var context = new DataClassesDataContext())
                {
                    var item = context.NSToChucs.Single(a => a.ToChucID.Equals(Convert.ToInt16(hdTochucId.Text)));
                    item.ToChucIDCha = idChaMoi;
                    context.SubmitChanges();
                }
                wdChangTochuc.Hide();
                ((PhanQuyenTheoToChuc)this.Page).LoadGrid(hdTochucIdChaCu.Value.ToString(),"");
                ((PhanQuyenTheoToChuc)this.Page).LoadDataForTree();
            }
            else
            {
                using (var context = new DataClassesDataContext())
                {
                    var item = context.QUModules.Single(a => a.ModuleID.Equals(Convert.ToInt16(hdTochucId.Text)));
                    item.ModuleIDCha = idChaMoi;
                    context.SubmitChanges();
                }
                wdChangTochuc.Hide();
                ((PhanQuyenChucNang)this.Page).LoadGrid(hdTochucIdChaCu.Value.ToString(),"");
                ((PhanQuyenChucNang)this.Page).LoadDataForTree();
            }
        }
    }
}